package com.example.javaee.controller;

import com.example.javaee.entity.Dish;
import com.example.javaee.mapper.DishMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

// 声明这是一个Spring Boot的REST控制器，返回数据会自动转为JSON格式
@RestController
// 定义这个控制器的基础请求路径为/api/dishes
@RequestMapping("/api/dishes")
// 允许来自http://localhost:5173的跨域请求，并允许携带认证信息（如cookies）
@CrossOrigin(origins = "http://localhost:5173", allowCredentials = "true")
public class DishController {

    // 自动注入DishMapper（菜品数据访问对象）
    @Autowired
    private DishMapper dishMapper;

    // 处理GET /api/dishes请求，获取所有菜品列表
    @GetMapping
    public List<Dish> getAllDishes() {
        // 调用dishMapper的findAll方法查询所有菜品
        return dishMapper.findAll();
    }

    // 处理GET /api/dishes/search请求，根据关键词搜索菜品
    @GetMapping("/search")
    public List<Dish> searchDishes(@RequestParam String keyword) {
        // 调用dishMapper的search方法，传入关键词进行搜索
        return dishMapper.search(keyword);
    }

    // 处理POST /api/dishes请求，添加新菜品
    @PostMapping
    public Map<String, Object> addDish(@RequestBody Dish dish) {
        // 创建返回结果的Map对象
        Map<String, Object> response = new HashMap<>();
        try {
            // 调用dishMapper的insert方法插入菜品数据
            int result = dishMapper.insert(dish);
            // 根据操作结果设置返回信息
            response.put("success", result > 0);
            response.put("message", result > 0 ? "添加成功" : "添加失败");
        } catch (Exception e) {
            // 如果出现异常，返回错误信息
            response.put("success", false);
            response.put("message", "添加失败：" + e.getMessage());
        }
        return response;
    }

    // 处理PUT /api/dishes/{id}请求，更新指定ID的菜品
    @PutMapping("/{id}")
    public Map<String, Object> updateDish(@PathVariable String id, @RequestBody Dish dish) {
        // 创建返回结果的Map对象
        Map<String, Object> response = new HashMap<>();
        try {
            // 设置菜品的ID（从路径参数获取）
            dish.set菜品编号(id);
            // 调用dishMapper的update方法更新菜品
            int result = dishMapper.update(dish);
            // 根据操作结果设置返回信息
            response.put("success", result > 0);
            response.put("message", result > 0 ? "更新成功" : "更新失败");
        } catch (Exception e) {
            // 如果出现异常，返回错误信息
            response.put("success", false);
            response.put("message", "更新失败：" + e.getMessage());
        }
        return response;
    }

    // 处理DELETE /api/dishes/{id}请求，删除指定ID的菜品
    @DeleteMapping("/{id}")
    public Map<String, Object> deleteDish(@PathVariable String id) {
        // 创建返回结果的Map对象
        Map<String, Object> response = new HashMap<>();
        try {
            // 调用dishMapper的delete方法删除菜品
            int result = dishMapper.delete(id);
            // 根据操作结果设置返回信息
            response.put("success", result > 0);
            response.put("message", result > 0 ? "删除成功" : "删除失败");
        } catch (Exception e) {
            // 如果出现异常，返回错误信息
            response.put("success", false);
            response.put("message", "删除失败：" + e.getMessage());
        }
        return response;
    }
}
